Adder4

Modified

2025-11-11

Source: Lab3Extra/Adder4.v (modified 2025-10-21 09:46)

//=========================================================
// 4-bit Ripple Carry Adder
//=========================================================
// Uses 4 instances of FullAdder (from full_adder.v)
// Inputs : A[3:0], B[3:0], Cin
// Outputs: Z[3:0], Cout
//=========================================================
module Adder4(
    input  [3:0] A,     // 4-bit input A
    input  [3:0] B,     // 4-bit input B
    input        Cin,   // Carry input
    output [3:0] Z,     // 4-bit sum output (renamed from Sum)
    output       Cout   // Final carry output
);

    // Internal carry wires
    wire c1, c2, c3;

    // Instantiate four 1-bit full adders
    FullAdder FA0 (.A(A[0]), .B(B[0]), .Cin(Cin),  .Sum(Z[0]), .Cout(c1));
    FullAdder FA1 (.A(A[1]), .B(B[1]), .Cin(c1),   .Sum(Z[1]), .Cout(c2));
    FullAdder FA2 (.A(A[2]), .B(B[2]), .Cin(c2),   .Sum(Z[2]), .Cout(c3));
    FullAdder FA3 (.A(A[3]), .B(B[3]), .Cin(c3),   .Sum(Z[3]), .Cout(Cout));

endmodule